# Turn ```javascript``` code snippets in the
# style guide into .js files in $OUTDIR
-awk --assign dir=$OUTDIR -- '
- BEGIN {
- do_print = 0;
- cur = 0;
- }
-
- # end of code snippet
- /```$/ {
- do_print = 0;
- cur++;
- }
-
- do_print {
- # remove one level of indent
- sub(" ","")
-
- # the following are class snippets, turn them
- # into functions to not confuse eslint
- sub("moveActor","function moveActor")
- sub("desaturateActor","function desaturateActor")
-
- # finally, append to the currently generated .js file
- print >> dir "/" cur ".js";
- }
-
- # start of code snippet
- /```javascript$/ {
- do_print = 1;
- }
-' docs/js-coding-style.md
+cat <<'EOF' | python3 - docs/js-coding-style.md $OUTDIR
+import sys
+import re
+
+def extract_js_snippets(input_file, output_dir):
+ with open(input_file, 'r') as file:
+ content = file.read()
+
+ # Find all JavaScript code blocks using regex
+ js_blocks = re.findall(r'```javascript\n(.*?)\n?```', content, flags=re.DOTALL)
+
+ for i, (match) in enumerate(js_blocks):
+ js_code = match
+
+ # Remove one level of indent
+ js_code = re.sub(r'^ {4}', '', js_code, flags=re.MULTILINE)
+
+ # The following are class snippets, turn them
+ # into functions to not confuse eslint
+ js_code = re.sub(r'^moveActor', 'function moveActor', js_code)
+ js_code = re.sub(r'^desaturateActor', 'function desaturateActor', js_code)
+
+ # Finally, create a .js file in the output directory
+ output_filename = f'{output_dir}/{i}.js'
+ with open(output_filename, 'w') as out_file:
+ out_file.write(f'{js_code}\n')
+
+input_file, output_dir = sys.argv[1:]
+extract_js_snippets(input_file, output_dir)
+EOF
eslint \
--rule 'no-undef: off' \